When image data is received by a printer device, a number of processes such as digital halftoning may be performed on the inputted image data in order to generate the end images. Digital halftoning is a process of transforming a continuous-tone image into a lower bit-depth image that has the illusion of the original continuous-tone image. Halftoning can be implemented for generating either color or monochromatic (i.e., black and white) images.
For example, in order to produce a pixel for an image that was originally intended to be a continuous-tone image using, for example, a monochromatic printer, 8-bits of data may be initially provided to the printer to indicate a grey scale for that pixel. In the following description, and for ease of understanding, the grey scale indicated by the original 8 bits of data will be referred to as an “input pixel value.” The 8 bits provided may define one of 256 different levels or shades of grey (e.g., from black at one end, to white at the other end, and different shades of grey in-between). However, printers are typically binary devices that may have limited ability to print many different shades of grey (for color printers, to print many variations of color). If a printer prints based on 1-bit data for each pixel, a pixel may be either black or white. For printers that print based on 2-bit data, a pixel can be black, white, or two shades of grey. The result of a halftoning process is to convert an input pixel value as defined by, for example, 8 bits of data, into an output pixel value, as defined by, for example, 1-bit data, a 2-bit data, or a 4-bit data (thus the term “lower bit-depth”).
Conversion of an input pixel value into lower bit depth value during the halftoning process may unfortunately result in error. In order to compensate for such errors, the halftoning process typically employs an error diffusion process in which the error associated with an image pixel generated during the halftoning process is diffused to the surrounding image pixels.
In part, because of the many processes that are typically performed on the inputted image data, including those processes described previously, printers typically employ a large amount of memory such as static random access memory (SRAM) to store the data being processed. Employing large amounts of memory in a printer device may be prohibitive because it tends to increase the overall cost of such printer device and may increase the complexity of the printer system.